import ArrayQueue from "./01_实现队列结构Queue";

function HotPotato(names:string[],num:number):number{
    //如果数组没有，直接 终止
    if(names.length === 0 ) return -1;
    const queue = new ArrayQueue<string>()
    //将数组中的所有数据全都入队
    for (let i = 0; i<names.length;i++){
        queue.enqueue(names[i])
    }
    //当队列中海油1个以上的数据时,一直循环
    while(queue.size() >1){
        //数数字,当数的数字小于传入的值时，让其入队再出队
        for (let i = 1; i < num; i++){
            const name = queue.dequeue()
            //这里防止出队的数据为undefined
            if(name) queue.enqueue(name)
        }
        //将最后数的数字值和传入的数字值相等时，将该数据出队
        queue.dequeue()
    }
    //后面的类型断言是为了防止取出的数据为undefined
    const leftName = queue.dequeue()!
    // console.log(leftName)
    //找到最后获胜的人的名字在数组中对应的下标
    const index = names.indexOf(leftName)
    return index
}

const leftIndex = HotPotato(['a','b','c','d','e'],3)
console.log(leftIndex)


